/* 
 * File:   cmdline.cpp
 * Author: landry
 * 
 * Created on 13 octobre 2009, 18:14
 */

#include "cmdline.h"

cmdLine::cmdLine() {
}

cmdLine::cmdLine(const cmdLine& orig) {
}

cmdLine::~cmdLine() {
}
void cmdLine::usageProg(char* program_name, int status){
  if (status == EXIT_SUCCESS)
    {
     std::cout << "Manuel de la commande" << program_name <<std::endl
           << "options  " << std::endl
           << "      -f [file]fichier contient des donnees à tester  "<<std::endl
           << "Les conditions d'arrêt sont les suivantes:"<< std::endl
           << "      -t: Suivi du temps d'arret de la simulation"<<std::endl
           << "      -n: Designant le nombre de client avant d'arreter la simulation"<<std::endl
           << "      -s: Nombre de serveur dans le systeme" <<std::endl
           << "      -v: Pour afficher les details d'execution du programme dans un fichier" <<std::endl
           << " informations sur les donnees des clients du systeme" << std::endl
           << " Si le fichier n'est pas precise en entree "<< std::endl
           << " nous executons le fichier exemple contenu dans le repertoire courant"<<std::endl
           << " Nous generons a la suite de l'execution 1 fichiers ayant donnant le  calendrier"<<std::endl
           << " avec le nom du fichier en entree"<< std::endl
           << " etabli par: "<< std::endl
           << " Equipe 1 Cours evaluation de performances 2009 "<<std::endl
           << "      " <<std::endl;

   }
  else
    {
      std::cerr << "Essayer '" << program_name << " -h' pour le manuel d'utilisation" << std::endl;
    }
  exit(status);
}


int cmdLine::parse_args(int argc, char *argv[],char* &chaine,int &Stop,int &s,char* &sortie) {
  extern char *optarg;
  extern int optind, opterr, optopt;
  //arrete = (char*) malloc(sizeof(char)*3);
  char c;
   while ((c = getopt(argc, argv, "a:f:t:n:s:v:uh")) != EOF){
    switch (c) {
      case 'h':       /* Aide */
      usageProg(argv[0], EXIT_SUCCESS);

      break;
      case 'f':       /* nb vertices */
       if (!(strcmp(optarg, " "))==0){
          strcpy ( chaine ,optarg);
          //std::cout<< optarg<<std::endl;
          FILE*OUT;
          OUT=NULL;
          OUT=fopen(chaine,"r+");
         if (OUT==NULL) {
	        std::cerr << argv[0] << ": Impossible d'ouvrir la source " << optarg << std::endl;
	     //    exit(EXIT_FAILURE);
            }

        }
       break;
        case 't':       /* temps d'arret */
            arret = 0;
        Stop=atoi(optarg);//arret est une variable globale
       // strcpy ( arret ,"t");
   //     k=2;
        break;

        case 'n':       /* nombre de client determinant la simulation*/
        Stop=atoi(optarg);
        arret = 1;
       // strcpy ( arret,"n" ); //arret est une variable globale
  //      k=2;
        break;
        case 's':       /* nombre de serveur dans le systeme */
        s=atoi(optarg);
     //   k=2;
        break;
	  case 'v':       /* nb vertices */
       if (!(strcmp(optarg, " "))==0){
          strcpy ( sortie ,optarg);
         
         
        }
       break;

       case ':': 
      /* missing operand */
	
       		std::cerr << argv[0] << ": Option -" << optopt << " L'operande est obligatoire" <<std::endl;
       		usageProg(argv[0], EXIT_FAILURE);
	
      break;
      case '?':       /* unknown option */
      std::cerr << argv[0] << ": Option inconue -" << optopt << std::endl;
      usageProg(argv[0], EXIT_FAILURE);
    };
  };

return 0;
}

